package 面试经典150题.二叉树;

import common.TreeNode;

/**
 * @author tmh
 * @date 2024/4/7 15:49
 * @description
 */
public class T114二叉树展开为链表 {

    public void flatten(TreeNode root) {
        while (root != null) {
            if (root.left == null) {
                root = root.right;
            } else {
                TreeNode pre = root.left;
                while (pre.right != null) {
                    pre = pre.right;
                }
                //将原来右子树的地方接到左子树的最右子树的地方
                pre.right = root.right;
                //交换左右字数的位置
                root.right = root.left;
                //把左子树的值置为null
                root.left = null;
                //对下一个节点执行重复的操作
                root = root.right;
            }
        }
    }
}
